Lab08 filesystems #8
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Laborator 8
myfs
Exercitiul 1
Structura
file_system_typea fost initializata pentru sistemul de fisiere virtualmyfs. In functia de mount specifica acestuia am folositmount_nodevintrucat filesystem-ul este virtual si nu are nevoie de suport fizic. In functiile de init si exit ale modulului am inregistrat/eliminat sistemul de fisiere.Corectitudinea implementarii am verificat-o prin urmatoarea serie de comenzi in masina virtuala:
Exercitiul 2
In structura de tipul
super_operationsam definit functiile superblock-ului utilizandu-le pe cele genericegeneric_delete_inode()sisimple_statfs()pentru o functionalitate minimala. Dupa aceea am completat functiafill_supercompletand restul campurilor din superblock.Exercitiul 3
Completand functia
myfs_get_inodeam initializat inode-ul radacina. Prelunad informatiile din namespace-ul root am completat campurileuid,gidsimodeale inode-ului. Fiind un director, am adaugat operatiile specifice si am incrementat numarul de link-uri.Exercitiul 4
Corectitudinea rezolvarii se poate observa din outputul urmator:
minfs
Exercitiul 1
In functia de mount
myfs_mountam folositmount_bdevintrucat filesystem-ul este nu mai este virtual ci are nevoie de suport fizic. Campulfs_flagsal structurii de tipulfile_system_typeare valoareaFS_REQUIRES_DEVpentru a indica un filesystem ce utilizeaza un disk.Verificam ca filesystem-ul a fost creat cu succes:
Exercitiul 2
Cu ajutorul functiei
sb_breadcitim block-ul de la index 0, campuluib_datai se face cast la structura de tip superblockstruct minfs_super_block(structura custom) si se verifica valoarea magic number-ului. Se copiaza valorile obtinute in superblock-ul generic si in structura de tipulstruct minfs_sb_info.Exercitiul 3
Am completat functiile
minfs_alloc_inodepopuland campulvfs_inodeal structurii alocate folosind functiainode_init_once. Conform functiei utilizate,initializare se face o singura data, campurile inode-ului fiind idempotent (nu se modifica in urma operatiilor). Apoi am completat functia de dezalocare asociata.Exercitiul 4
Cu ajutorul functiei
sb_breadcitim block-ul de la index 1, apoi extragem inode-ul de index-ulino. Am completat campurileuid,gid,modesisizeale variabileiinode(VFS inode). In cazul in care inode-ul este director, atunci se completeaza si campurilei_opsii_fopsi incrementam numarul de link-uri.Acum inlocuim apelul functiei
myfs_get_inodecu aceasta functieminfs_iget.Exercitiul 5
Testam corectitudinea implementarii:
Setup: